﻿package com.alstudio.module.sns.weiboshare;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Random;

import android.content.Context;
import android.graphics.Bitmap;
import android.text.TextUtils;
import android.util.Base64;

import com.alstudio.app.ALLocalEnv;
import com.alstudio.app.VersionConfig;
import com.alstudio.utils.log.ALLog;
import com.loovee.imaohu.R;

public final class WeiboShareUtil {

	public static final int SHARE_TO_FACEBOOK = 0;
	public static final int SHARE_TO_TWITTER = 1;
	public static final int SHARE_TO_SINA = 2;
	public static final int SHARE_TO_TENCENT = 3;

	public static final int SHARE_TO_WEIXIN = 4;
	public static final int SHARE_TO_WEIXIN_2 = 5;
	public static final int SHARE_TO_WEIXIN_FRIEND = 6;

	// ======= 菜单选项 ========
	public static ArrayList<WeiboShareMenuItem> getDefaultShareMenuItem(
			Context context) {
		ArrayList<WeiboShareMenuItem> menuItems = new ArrayList<WeiboShareMenuItem>();

		switch (VersionConfig.APP_FOR_LOCATION) {
		case VersionConfig.FOR_CHINA:

			menuItems.add(new WeiboShareMenuItem(context
					.getString(R.string.TxtSnsPanelShareSina), SHARE_TO_SINA));
			menuItems.add(new WeiboShareMenuItem(context
					.getString(R.string.TxtSnsPanelShareTencent),
					SHARE_TO_TENCENT));
			menuItems.add(new WeiboShareMenuItem(context
					.getString(R.string.TxtSnsPanelShareWeixin),
					SHARE_TO_WEIXIN));
			break;
		case VersionConfig.FOR_INTERNATIONAL:
		default:
			// menuItems.add(new WeiboShareMenuItem(context
			// .getString(R.string.string_weibo_share_facebook),
			// SHARE_TO_FACEBOOK));
			// menuItems.add(new WeiboShareMenuItem(context
			// .getString(R.string.string_weibo_share_twitter),
			// SHARE_TO_TWITTER));
			break;
		}

		return menuItems;
	}

	public static class WeiboShareMenuItem implements Serializable {
		private static final long serialVersionUID = -5100334339162166789L;

		public String menuText = "";
		public int shareTo = -1;

		public WeiboShareMenuItem(String menuText, int shareTo) {
			this.menuText = menuText;
			this.shareTo = shareTo;
		}
	};

	// ========================

	public static Bitmap createShareImage() {
		// return WeiboShareImageCreator.createShareImage();
		return null;
	}

	// public static String getMyHomePageUrl() {
	// String id = App.myVcard.getIdFromJid();
	//
	// if (TextUtils.isEmpty(id))
	// return "";
	//
	// // 个人主页：http://www.imeach.com/user/MjAzNjQ5（MjAzNjQ5为用户ID编码base64生成）
	// String base64_id = "";
	//
	// try {
	// byte[] data = id.getBytes("UTF-8");
	// base64_id = Base64.encode(data);
	// } catch (UnsupportedEncodingException e) {
	// e.printStackTrace();
	//
	// base64_id = "";
	// }
	//
	// if (TextUtils.isEmpty(base64_id))
	// return "";
	//
	// return App.mVersionConfig.MY_HOME_PAGE_URL_PREFIX + base64_id;
	// }

	/**
	 * 分享好友主页
	 * 
	 * @param jid
	 *            好友id
	 * @return
	 */
	// public static String getUserHomePageUrl(String jid) {
	// // String id = App.myVcard.getIdFromJid();
	//
	// if (TextUtils.isEmpty(jid))
	// return "";
	//
	// // 个人主页：http://www.imeach.com/user/MjAzNjQ5（MjAzNjQ5为用户ID编码base64生成）
	// String base64_id = "";
	//
	// try {
	// byte[] data = jid.getBytes("UTF-8");
	// base64_id = Base64.encode(data);
	// } catch (UnsupportedEncodingException e) {
	// e.printStackTrace();
	//
	// base64_id = "";
	// }
	//
	// if (TextUtils.isEmpty(base64_id))
	// return "";
	//
	// return App.mVersionConfig.MY_HOME_PAGE_URL_PREFIX + base64_id;
	// }

	public static String getDefaultLooveeAppLogoUrl() {
		String url = ALLocalEnv.getLocalEnv().getResources()
				.getString(R.string.UrlDefaultLooveeShare);

		return url;
	}

	public static String getUrl(int weiboType) {
		String url = "";

		switch (weiboType) {
		case WeiboShareFactory.FACEBOOK_SHARE:
			break;
		case WeiboShareFactory.TWITTER_SHARE:
			break;
		case WeiboShareFactory.SINA_SHARE:
			url = ALLocalEnv.getLocalEnv().getString(
					R.string.UrlDefaultLooveeShareToSina);
			break;
		case WeiboShareFactory.TENCENT_SHARE:
			url = ALLocalEnv.getLocalEnv().getString(
					R.string.UrlDefaultLooveeShareToTencent);
			break;
		case WeiboShareFactory.WEIXIN_SHARE:
			url = ALLocalEnv.getLocalEnv().getString(
					R.string.UrlDefaultLooveeShareToWeixin);
			break;
		default:
			break;
		}

		return url;
	}

	public static String appendUrl(String text, int weiboType) {
		// return text + getUrl(weiboType);
		return "";
	}

	public static String getShareTextWithParam(int shareTo,
			ShareContentParam param, Context context) {
		String text = "分享测试";

		switch (param.mShareType) {
		case ShareContentParam.SHARE_TYPE_USE:
			// text = getShareUseText(shareTo);
			break;
		case ShareContentParam.SHARE_TYPE_WINNING_GOLD:
			// text = getShareWinningGoldText(shareTo, param.mSex, param.mGold);
			break;
		case ShareContentParam.SHARE_TYPE_WINNING_VIP:
			// text = getShareWinningVipText(shareTo, param.mSex);
			break;
		case ShareContentParam.SHARE_TYPE_SOUND:
			// text = getShareSoundText(shareTo, param.mScore);
			break;
		case ShareContentParam.SHARE_TYPE_PRAISE:
			// text = getSharePraiseText(shareTo, param.mPraise);
			break;
		case ShareContentParam.SHARE_TYPE_VIP:
			// text = getShareVipText(shareTo, param.mNick);
			break;
		case ShareContentParam.SHARE_TYPE_MAGIC:
			// text = getMagicText(param.mShareMagicType);
			break;
		case ShareContentParam.SHARE_TYPE_HOME_PAGE:
			text = context.getString(R.string.TxtShareHomePageContent);
			// if (param.isMyHomePage) {
			// text = App.ctx.getString(R.string.string_share_my_home_page);
			// } else {
			// text = App.ctx.getString(R.string.string_share_user_home_page);
			// String sex = App.ctx.getString(R.string.string_he);
			// if (!param.isMale) {
			// sex = App.ctx.getString(R.string.string_she);
			// }
			// text = String.format(text, param.mNick, sex);
			// }
			break;
		case ShareContentParam.SHARE_TYPE_INVITE_USER:
			// text = App.ctx.getString(R.string.string_invite_message);
			break;
		default:
			break;
		}

		return text;
	}

	// private static String getMagicText(int magic) {
	// String text = null;
	// switch (magic) {
	// case ShareContentParam.SHARE_MAGIC_TYPE_LIKE:
	// text = App.ctx.getResources().getString(
	// R.string.string_share_like_you);
	// break;
	// case ShareContentParam.SHARE_MAGIC_TYPE_LOVE:
	// text = App.ctx.getResources().getString(
	// R.string.string_share_love_you);
	// break;
	// case ShareContentParam.SHARE_MAGIC_TYPE_HAPPY_BIRTHDAY:
	// text = App.ctx.getResources().getString(
	// R.string.string_share_happy_birthday);
	// break;
	// case ShareContentParam.SHARE_MAGIC_TYPE_HAPPY_FESTIVAL:
	// text = App.ctx.getResources().getString(
	// R.string.string_share_festival);
	// break;
	// case ShareContentParam.SHARE_MAGIC_TYPE_ZHA_REN:
	// text = App.ctx.getResources().getString(
	// R.string.string_share_zha_xiaoren);
	// break;
	// case ShareContentParam.SHARE_MAGIC_TYPE_BEAT:
	// text = App.ctx.getResources().getString(R.string.string_share_beat);
	// break;
	// }
	// return text;
	// }

	// public static String getShareUseText(int shareTo) {
	// Random random = new Random(System.currentTimeMillis());
	// int type = random.nextInt(2000) % 3;
	//
	// ALLog.d("随机选择一段话分享了，type " + type);
	//
	// String text = "";
	// switch (type) {
	// case 0:
	// text = App.ctx.getResources().getString(
	// R.string.string_weibo_share_use_text1);
	// break;
	// case 1:
	// text = App.ctx.getResources().getString(
	// R.string.string_weibo_share_use_text2);
	// break;
	// case 2:
	// default:
	// text = App.ctx.getResources().getString(
	// R.string.string_weibo_share_use_text3);
	// break;
	//
	// }
	//
	// return text;
	// }

	// public static String getShareWinningGoldText(int shareTo, String gender,
	// String gold) {
	// String text = "";
	//
	// if (gender != null && gender.equals("male")) {
	// text = App.ctx.getResources().getString(
	// R.string.string_weibo_share_lottery_text_male_part1)
	// + gold
	// + App.ctx.getResources().getString(
	// R.string.string_weibo_share_gold)
	// + App.ctx
	// .getResources()
	// .getString(
	// R.string.string_weibo_share_lottery_text_male_part2);
	// } else {
	// text = App.ctx.getResources().getString(
	// R.string.string_weibo_share_lottery_text_female_part1)
	// + gold
	// + App.ctx.getResources().getString(
	// R.string.string_weibo_share_gold)
	// + App.ctx
	// .getResources()
	// .getString(
	// R.string.string_weibo_share_lottery_text_female_part2);
	// }
	//
	// return text;
	// }

	// public static String getShareWinningVipText(int shareTo, String gender) {
	// String text = "";
	//
	// if (gender != null && gender.equals("male")) {
	// text = App.ctx.getResources().getString(
	// R.string.string_weibo_share_lottery_text_male_part1)
	// + App.ctx.getResources().getString(
	// R.string.string_weibo_share_vip)
	// + App.ctx
	// .getResources()
	// .getString(
	// R.string.string_weibo_share_lottery_text_male_part2);
	// } else {
	// text = App.ctx.getResources().getString(
	// R.string.string_weibo_share_lottery_text_female_part1)
	// + App.ctx.getResources().getString(
	// R.string.string_weibo_share_vip)
	// + App.ctx
	// .getResources()
	// .getString(
	// R.string.string_weibo_share_lottery_text_female_part2);
	// }
	//
	// return text;
	// }

	// public static String getShareSoundText(int shareTo, int score) {
	// String text = App.ctx.getResources().getString(
	// R.string.string_weibo_share_sound_text1)
	// + score
	// + App.ctx.getResources().getString(
	// R.string.string_weibo_share_sound_text2);
	//
	// return text;
	// }

	// public static String getSharePraiseText(int shareTo, String praiseText) {
	// String text = "\""
	// + praiseText
	// + "\""
	// + App.ctx.getResources().getString(
	// R.string.string_weibo_share_praise_text);
	//
	// return text;
	// }

	// public static String getShareVipText(int shareTo, String nick) {
	// String text = App.ctx.getResources()
	// .getString(R.string.congratulations)
	// + nick
	// + App.ctx.getResources().getString(
	// R.string.string_weibo_share_vip_text);
	//
	// return text;
	// }

	public static boolean saveBitmap(String path, Bitmap image) {
		if (TextUtils.isEmpty(path) || image == null)
			return false;

		FileOutputStream fOut = null;
		try {
			File file = new File(path);
			if (file.exists()) {
				file.delete();
			}

			File directory = file.getParentFile();

			if (!directory.exists()) {
				directory.mkdirs();
			}

			if (!file.createNewFile()) {
				ALLog.d("创建分享图片失败啦!");
				return false;
			}

			fOut = new FileOutputStream(file);

			if (!image.compress(Bitmap.CompressFormat.PNG, 100, fOut)) {
				ALLog.d("保存分享图片失败啦!");
				return false;
			}

			fOut.flush();

		} catch (IOException e) {
			ALLog.d("保存分享图片出意外啦！亲");
			e.printStackTrace();

			return false;
		} finally {
			if (fOut != null) {
				try {
					fOut.close();
				} catch (IOException e) {
					ALLog.d("出意外啦！亲");
					e.printStackTrace();

					return false;
				}
			}
		}

		ALLog.d("保存分享图片成功!");
		return true;
	}

	public static boolean saveBitmap(String path, Bitmap image,
			SaveImageCallback callback) {
		if (TextUtils.isEmpty(path) || image == null)
			return false;

		FileOutputStream fOut = null;
		try {
			File file = new File(path);
			if (file.exists()) {
				file.delete();
			}

			File directory = file.getParentFile();

			if (!directory.exists()) {
				directory.mkdirs();
			}

			if (!file.createNewFile()) {
				ALLog.d("创建分享图片失败啦!");
				if (callback != null) {
					callback.onSaveFail();
				}
				return false;
			}

			fOut = new FileOutputStream(file);

			if (!image.compress(Bitmap.CompressFormat.JPEG, 100, fOut)) {
				ALLog.d("保存分享图片失败啦!");
				return false;
			}

			fOut.flush();
			if (callback != null) {
				callback.onSaveSuccess(file.getAbsolutePath());
			}

		} catch (IOException e) {
			ALLog.d("保存分享图片出意外啦！亲");
			e.printStackTrace();
			if (callback != null) {
				callback.onSaveFail();
			}
			return false;
		} finally {
			if (fOut != null) {
				try {
					fOut.close();
				} catch (IOException e) {
					ALLog.d("出意外啦！亲");
					e.printStackTrace();
					if (callback != null) {
						callback.onSaveFail();
					}
					return false;
				}
			}
		}

		ALLog.d("保存分享图片成功!");
		return true;
	}

	public interface SaveImageCallback {
		public void onSaveSuccess(final String path);

		public void onSaveFail();
	}

}
